home *** CD-ROM | disk | FTP | other *** search
- /*
- * Viewer_Window.c
- *
- * QuickDraw 3D 1.6 Sample
- * Robert Dierkes
- *
- * 12/22/98 RDD Created.
- */
-
- /*------------------*/
- /* Include Files */
- /*------------------*/
- #include "QD3DViewer.h"
-
- #if defined(OS_MACINTOSH) && OS_MACINTOSH
- #include <MacWindows.h>
- #endif
-
- #include "Viewer_Error.h"
- #include "Viewer_Window.h"
-
-
- /*----------------------*/
- /* Global Declarations */
- /*----------------------*/
- WindowPtr gWindows[kMaxWindowCount];
-
-
- /*----------------------*/
- /* Local Prototypes */
- /*----------------------*/
-
-
-
- /*
- * Window_Initialize
- */
- TQ3Status Window_Initialize(
- void)
- {
- unsigned long i;
-
- for (i = 0; i < kMaxWindowCount; i++) {
- gWindows[i] = NULL;
- }
-
- return kQ3Success;
- }
-
-
- /*
- * Window_Exit
- */
- TQ3Status Window_Exit(
- void)
- {
- unsigned long i;
-
- for (i = 0; i < kMaxWindowCount; i++) {
- if (gWindows[i] != NULL) {
- (void) Window_CloseViewer(&gWindows[i]);
- }
- }
-
- return kQ3Success;
- }
-
-
- #pragma mark -
-
- /*
- * Window_GetViewer
- */
- TQ3ViewerObject Window_GetViewer(
- WindowPtr pWindow)
- {
- if (pWindow != NULL) {
- return ((TQ3ViewerObject) GetWRefCon(pWindow));
- }
-
- return NULL;
- }
-
-
- /*
- * Window_CloseViewer
- */
- OSErr Window_CloseViewer(
- WindowPtr *hWindow)
- {
- OSErr theErr = noErr;
- TQ3ViewerObject viewer = NULL;
- WindowPtr window;
- unsigned long i;
-
- if ((hWindow == NULL) ||
- (*hWindow == NULL)) {
- ERROR_DEBUG_STR("Window_CloseViewer: hWindow == NULL");
- return paramErr;
- }
- window = *hWindow;
-
- if ((viewer = Window_GetViewer(window)) == NULL) {
- ERROR_DEBUG_STR("Window_CloseViewer: viewer == NULL");
- return paramErr;
- }
-
- /* Dispose the Viewer */
- if ((theErr = Q3ViewerDispose(viewer)) != noErr) {
- ERROR_DEBUG_STR("Window_CloseViewer: Q3ViewerDispose failed");
- return paramErr;
- }
-
- /* Remove window from list */
- for (i = 0; i < kMaxWindowCount; i++) {
- if (window == gWindows[i]) {
- gWindows[i] = NULL;
- break;
- }
- }
-
- /* Dispose the window */
- DisposeWindow(window);
- *hWindow = NULL;
-
- return theErr;
- }
-